#include <stdio.h>
/*
完美数字 ：一个数除去自身的所有因子相加 还等于这个数，这样的数称为完美数字。
求： 1....1000范围内所有的完美数字。
*/
int PerfectNumber(int num) 
{
    int sum = 0;
    for (int i = 1; i < num; i++) 
    {
        if (num % i == 0) 
        {
            sum += i;
        }
    }
    return sum == num; 
    //sum == num会比较sum和num的值是否相等。
    //如果相等，说明累加因子的和等于该数字本身，也就是说该数字是完美数字。此时，return语句将返回真（非零值）。
    //如果不相等，说明累加因子的和不等于该数字本身，该数字不是完美数字。return语句将返回假（零值）
}

int main(int argc , const char *argv[]) 
{
    printf("1到1000范围内的完美数字有:\n");
    for (int i = 1; i <= 1000; i++) 
    {
        if (PerfectNumber(i)) //调用函数
        {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}
